home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1995 #5 & #6 / Amiga Plus CD - 1995 - No. 5 and 6.iso / pd / serien / purity / nr.34 / cheque2.06 / cheque2.06.p < prev    next >
Text File  |  1994-08-19  |  19KB  |  625 lines

  1. { Cheque 2.06: Eurochequebedruckprogramm (fontsensitiv/auslesen der Batt-
  2.   Clock/einfach aber nett/benutzt die Gadtools.lib/Reqtools.lib
  3.  
  4.   Das Programm ist Freeware. Es müssen folgenden Datein, inkl. deren
  5.   Icons enthalten sein:Cheque2.06, Anleitung, Cheque2.06.p (nur Purity)
  6.   Weitere Bedingungen / Einschränkungen in der Anleitung
  7.  
  8.   Erstellt mit KickPascal 2.12 von Maxon Computer GmbH
  9.  
  10.   Programmierer:    Falk Zühlsdorff (PackMAN)
  11.                     Lindenberg 66
  12.                     98693 Ilmenau / Thüringen                         }
  13.  
  14. Program cheque;
  15.  
  16. USES Reqtools4,Gadtools,BATTCLOCKLIGHT,PrtChk;
  17. {$ incl "dos.lib"};
  18.  
  19. TYPE  helpstr           = string;
  20.       strtype           = string[200];
  21. VAR   PScr              : p_screen;
  22.       drawinfo          : p_drawinfo;
  23.       txattr            : TextAttr;
  24.       font              : p_textfont;
  25.       ysize,ScrTextFont,
  26.       Winbreite         : word;
  27.       baseline,rem      : word;
  28.       Wbr               : integer;
  29.       ourfont,RT,mIDCMP : long;
  30.       ALLOK,ex,dos,help : boolean;
  31.       Win               : ^Window;
  32.       RP                : ^RastPort;
  33.  
  34.       msg               : ^IntuiMessage;
  35.       akt               : ^Gadget;
  36.  
  37.       NWTags            : array[1..13] OF tagitem;
  38.       titel             : string;
  39.       gfx               : long;
  40.       pgad,glist        : p_Gadget;
  41.       vi                : PTR;
  42.       fontname          : string;
  43.       i                 : byte;
  44.       Vorab             : boolean;
  45.  
  46.       {****************}
  47.       ng                : NewGadget;
  48.       g                 : array[0..12] OF p_Gadget;STATIC;
  49.       GTags             : array[0..2] OF TagItem;STATIC;
  50.       cfeld             : array[0..6] OF ^helpstr;           {@-Gads}
  51.       CTx               : array[0..2] OF string;
  52.       cycleNr           : byte;
  53.       CTags             : array[0..3] OF TagItem;STATIC;
  54.  
  55.       STx               : array[0..6] OF string;
  56.       STagsA,STagsB,
  57.       STagsC,STagsD,
  58.       STagsE,STagsF,
  59.       STagsG            : array[0..4] OF TagItem;
  60.       StrAkt            : boolean;
  61.       sig               : ^stringinfo;
  62.       TTx               : array[0..5] OF string;
  63.       TTags             : array[0..3] OF TagItem;
  64.  
  65.       ReqInfo           : p_rtReqInfo;
  66.  
  67. {-------------------------------------------------------------------------}
  68. PROCEDURE abschalten;
  69. BEGIN
  70.  mIDCMP:=Win^.IDCMPFlags;
  71.  help:=ModifyIDCMP(Win,0);
  72.  rem:=RemoveGList(Win,g[0],13);
  73. END;
  74. {-------------------------------------------------------------------------}
  75. PROCEDURE zuschalten;
  76. BEGIN
  77.  help:=ModifyIDCMP(Win,mIDCMP);
  78.  rem:=AddGList(Win,g[0],0,13,nil);
  79. END;
  80. {-------------------------------------------------------------------------}
  81. FUNCTION RTReq(Titel,Text,gadtx:string,Pos:byte):long;
  82. VAR tags        : array[0..7] of tagitem;STATIC;
  83. BEGIN
  84.    Tags[0]:=TagItem(RTEZ_Reqtitle,Long(^titel));
  85.    Tags[1]:=TagItem(RTGS_GadFmt,long(^gadtx));
  86.    Tags[2]:=TagItem(RT_UnderScore,long('_'));
  87.    Tags[3]:=TagItem(RTGS_BackFill,long(false));
  88.    Tags[4]:=TagItem(RT_ReqPos,Pos);
  89.    Tags[5]:=TagItem(RTGS_Flags,GSREQF_CENTERTEXT or GSREQF_HIGHLIGHTTEXT);
  90.    Tags[6]:=TagItem(RT_Window,long(Win));
  91.    Tags[7].ti_tag:=Tag_END;
  92.    RTReq:=rtEZRequestA(^Text,^gadtx,NIL,NIL,^Tags[0]);
  93. END;
  94. {-------------------------------------------------------------------------}
  95. FUNCTION RTReq2(Titel:string,Text:strtype,gadtx:string,Pos,left,
  96.                 top:long):long;
  97. VAR tags        : array[0..10] of tagitem;STATIC;
  98. BEGIN
  99.    Tags[0]:=TagItem(RTEZ_Reqtitle,Long(^titel));
  100.    Tags[1]:=TagItem(RTGS_GadFmt,long(^gadtx));
  101.    Tags[2]:=TagItem(RT_UnderScore,long('_'));
  102.    Tags[3]:=TagItem(RTGS_BackFill,long(false));
  103.    Tags[4]:=TagItem(RT_ReqPos,Pos);
  104.    Tags[5]:=TagItem(RT_LeftOffset,left);
  105.    Tags[6]:=TagItem(RT_TopOffset,top);
  106.     Tags[7]:=TagItem(RT_TextAttr,long(^txattr));
  107.    Tags[8]:=TagItem(RTGS_Flags,GSREQF_CENTERTEXT or GSREQF_HIGHLIGHTTEXT);
  108.    Tags[9]:=TagItem(RT_Window,long(Win));
  109.    Tags[10].ti_tag:=Tag_END;
  110.    RTReq2:=rtEZRequestA(^Text,^gadtx,NIL,NIL,^Tags[0]);
  111. END;
  112. {-------------------------------------------------------------------------}
  113. FUNCTION RTReqFirst(Titel,Text,gadtx:string):long;
  114. VAR tags        : array[0..6] of tagitem;
  115. BEGIN
  116.    Tags[0]:=TagItem(RTEZ_Reqtitle,Long(^titel));
  117.    Tags[1]:=TagItem(RTGS_GadFmt,long(^gadtx));
  118.    Tags[2]:=TagItem(RT_UnderScore,long('_'));
  119.    Tags[3]:=TagItem(RTGS_BackFill,long(false));
  120.    Tags[4]:=TagItem(RT_ReqPos,ReqPos_TopLeftScr);                      {4}
  121.    Tags[5]:=TagItem(RTGS_Flags,GSREQF_CENTERTEXT or GSREQF_HIGHLIGHTTEXT);
  122.    Tags[6].ti_tag:=Tag_END;
  123.    RTReqFirst:=rtEZRequestA(^Text,^gadtx,NIL,NIL,^Tags[0]);
  124. END;
  125. {------------------------------------------------------------------------}
  126. PROCEDURE InfoLine;
  127. CONST up:=chr(10);
  128. BEGIN
  129.  abschalten;
  130.  RT:=RTReq2('Information',
  131.             'Druckprogramm für Eurocheques.'+up+up+
  132.             'FREEWARE - KickPascal 2.12/OS2'+up+up+
  133.             '© & P by'+up+
  134.             '(PackMAN) Falk Zühlsdorff'+up+
  135.             'Lindenberg 66'+up+
  136.             'D-98693 Ilmenau / Thüringen'+up+up+
  137.             'Reqtools.library © by N.François',
  138.             '_OK',5,Win^.LeftEdge+20*Wbr,Win^.Topedge);
  139.  zuschalten;
  140. END;
  141. {-------------------------------------------------------------------------}
  142. PROCEDURE Topaz8;
  143. BEGIN
  144.  fontname:='topaz.font';
  145.  ysize:=8;
  146.  WBr:=8;
  147.  txattr:=TextAttr(fontname,ysize,0,0);
  148.  Font:=OpenFont(^txattr);
  149. END;
  150. {-------------------------------------------------------------------------}
  151. PROCEDURE Neu;
  152. BEGIN
  153.   STx[0]:='';STx[1]:='';STx[2]:='DM';STx[3]:='';
  154.   GT_SetGadgetAttrsA(g[0],Win,NIL,^STagsA[3]);
  155.   GT_SetGadgetAttrsA(g[1],Win,NIL,^STagsB[3]);
  156.   GT_SetGadgetAttrsA(g[2],Win,NIL,^STagsC[3]);
  157.   GT_SetGadgetAttrsA(g[3],Win,NIL,^STagsD[3]);
  158. END;
  159. {-------------------------------------------------------------------------}
  160. PROCEDURE GetStrGaddata;    {my fantastic methode}
  161. BEGIN
  162.   FOR i:=0 TO 6 DO
  163.    BEGIN
  164.     sig:=g[i]^.SpecialInfo;
  165.     STx[i]:=sig^.buffer;
  166.    END;
  167. END;
  168. {------------------------------------------------------------------------}
  169.  
  170. PROCEDURE Drucken;
  171. CONST ESC:=CHR(27);
  172.       Test:='PRT:';
  173. VAR LST           : text;STATIC;
  174.     outfile       : BPTR;STATIC;
  175.     anzahl,abc    : long;STATIC;
  176.     strg          : String[2];STATIC;
  177.     x,j           : byte;
  178.     endlich       : boolean;
  179.  
  180.  FUNCTION check:boolean;
  181.  VAR ok:byte;
  182.  BEGIN
  183.    ok:=CheckPrt;
  184.    CASE ok OF
  185.     0: check:=true;
  186.     1: BEGIN RT:=RTReq('Cheque 2.06',
  187.              'Drucker: offline','_JA',4); check:=false;
  188.               zuschalten;
  189.        END;
  190.     2: BEGIN RT:=RTReq('Cheque 2.06',
  191.              'Drucker: kein Papier','_JA',4); check:=false;
  192.               zuschalten;
  193.        END;
  194.     3: BEGIN RT:=RTReq('Cheque 2.06',
  195.              'Drucker: offline/kein Papier','_JA',4); check:=false;
  196.              Zuschalten;
  197.        END;
  198.    ELSE;END;
  199.  END;
  200. {---OF Drucken----}
  201. BEGIN
  202.  abschalten;
  203.  endlich:=false;
  204.  GetStrGaddata;
  205.  IF NOT Check THEN EXIT;
  206.  strg:=' ';
  207.  outfile:=Open(Test,Mode_OLDFILE);                {Drucker ansprechen}
  208.  IF outfile<>0 THEN
  209.    BEGIN
  210.     anzahl:=dosWrite(outfile,^strg,3); {Online okay ... Test2 for fucking }
  211.     IF anzahl=3 THEN                   {Printers,like mine C=1550C}
  212.      BEGIN
  213.       abc:=DOSClose(outfile);
  214.       Rewrite(LST,'PRT:');
  215.       IF IOResult=0 THEN
  216.        BEGIN
  217.         write(LST,ESC,'#1',ESC,'[2"z',ESC,'[0m',ESC,'[4w',
  218.               ESC,'[1p',ESC,'[0z');
  219.         IF cycleNr=1
  220.          THEN writeln(LST,'                              NUR ZUR VERRECHNUNG')
  221.          ELSE writeln(LST);
  222.         writeln(LST);
  223.         writeln(LST);
  224.         x:=STRLEN(STx[0]);
  225.         x:=50-x+8;
  226.         write(LST,STx[0]);
  227.         IF x>0 THEN for j:=1 to x do write(LST,' ');
  228.         write(LST,STx[2]);
  229.         x:=STRLEN(STx[2]); IF x<3 THEN for j:=1 to x do write(LST,' ');
  230.         writeln(LST,'    =',STx[3]);
  231.         writeln(LST);
  232.         writeln(LST);
  233.         x:=STRLEN(STx[1]);
  234.         x:=50-x+8;
  235.         write(LST,STx[1]);
  236.         IF x>0 THEN for j:=1 to x do write(LST,' ');
  237.         writeln(LST,STx[4]);
  238.         writeln(LST);
  239.         writeln(LST,
  240.          '                                                          ',
  241.          STx[5]);
  242.         close(LST);
  243.         endlich:=true;
  244.        END ELSE  abc:=DosClose(Outfile);
  245.      END ELSE abc:=DosClose(Outfile);
  246.    END ELSE  abc:=DosClose(Outfile);
  247.  IF endlich THEN
  248.   BEGIN
  249.    RT:=RTReq('Cheque 2.06','Rückseite (KartenNr) drucken ?','_Jetzt|_Stop !',4);
  250.    IF RT=1 THEN
  251.     BEGIN
  252.      IF NOT Check THEN EXIT;
  253.      strg:=' ';
  254.      outfile:=Open(Test,Mode_OLDFILE);
  255.      IF outfile<>0 THEN
  256.       BEGIN
  257.        anzahl:=dosWrite(outfile,^strg,3);
  258.        IF anzahl=3
  259.         THEN BEGIN
  260.               abc:=DOSClose(outfile);
  261.               Rewrite(LST,'PRT:');
  262.               IF IOResult=0 THEN
  263.                BEGIN
  264.                 write(LST,ESC,'#1',ESC,'[2"z',ESC,'[0m',ESC,'[4w',
  265.                 ESC,'[1p',ESC,'[0z');
  266.                 FOR i:=1 TO 6 DO
  267.                  writeln(LST);
  268.                 writeln(LST,'            ',STx[6]);
  269.                 Close(LST);
  270.                 delay(25*3);
  271.                END
  272.               ELSE RT:=RTReq('Cheque 2.06','KartenNr nicht druckbar',
  273.                    '_Na Gut !',4);
  274.              END
  275.          ELSE
  276.           BEGIN
  277.            abc:=DOSClose(outfile);
  278.            RT:=RTReq('Cheque 2.06','KartenNr nicht druckbar',
  279.            '_Na Gut !',4);
  280.           END;
  281.       END
  282.         ELSE abc:=DosClose(Outfile);
  283.     END;
  284.   END;
  285.  zuschalten;
  286. END;
  287.  
  288. {-------------------------------------------------------------------------}
  289. PROCEDURE Speichern;
  290. VAR f:text;
  291. BEGIN
  292.  GetStrGaddata;
  293.  rewrite(f,'SYS:S/Cheque2.06.con');
  294.  IF IOResult=0
  295.   THEN BEGIN
  296.         writeln(f,'Ch2.06Data');
  297.         writeln(f,STx[4]);
  298.         writeln(f,STx[6]);
  299.         close(f);
  300.        END;
  301. END;
  302. {-------------------------------------------------------------------------}
  303. PROCEDURE Laden;
  304.  VAR f  :text;
  305.      buf:string;
  306. BEGIN
  307.   assign(f,'SYS:S/Cheque2.06.con');
  308.   reset(f);
  309.   IF IOResult=0
  310.   THEN BEGIN
  311.         readln(f,buf);
  312.         IF buf<>'Ch2.06Data'
  313.          THEN
  314.           BEGIN STx[6]:='';Stx[4]:=''; close(f); END
  315.          ELSE
  316.           BEGIN
  317.            readln(f,STx[4]);
  318.            readln(f,STx[6]);
  319.            close(f);
  320.           END;
  321.         END;
  322. END;
  323. {-------------------------------------------------------------------------}
  324. PROCEDURE cycle(taste:byte);
  325. BEGIN
  326.  IF cycleNr=0 THEN INC(cycleNr) ELSE DEC(cycleNr);
  327.  IF taste=1 THEN
  328.   BEGIN
  329.    CTags[0]:=TagItem(GTCY_Active,cycleNr);
  330.    GT_SetGadgetAttrsA(g[7],Win,NIL,^CTags[0]);
  331.   END;
  332. END;
  333. {-------------------------------------------------------------------------}
  334. PROCEDURE InitWin;
  335. BEGIN
  336.  ALLOK:=false;
  337.  Vorab:=false;
  338.  PScr:=NIL;
  339.  PScr:=lockpubscreen(NIL);
  340.  IF PScr<>NIL THEN
  341.   BEGIN
  342.    drawinfo:=getscreendrawinfo(PScr);
  343.     IF drawinfo<>NIL THEN
  344.      BEGIN
  345.       font:=drawinfo^.dri_font;
  346.       ysize:=font^.tf_ysize;
  347.       ScrTextFont:=ysize;
  348.       baseline:=font^.tf_baseline;
  349.       Wbr:=textlength(^PScr^.rastport,'W',1);
  350.       Winbreite:=textlength(^PScr^.rastport,
  351.        'Erstellt in KickPascal 2.12/OS2-Includes von Maxon-Computer GmbHwwwwwwwwwwwwwwww',80);
  352.       vi:=GetVisualinfoA(PScr,nil);
  353.       IF (Winbreite>Pscr^.width) OR (17*ysize>Pscr^.height) THEN VORAB:=true;
  354.       freescreendrawinfo(PScr,drawinfo);
  355.       UnlockPubScreen(NIL,PScr);
  356.       Pgad:=NIL;
  357.       Pgad:=CreateContext(^Glist);
  358.       IF pgad<>nil
  359.        THEN
  360.         BEGIN
  361.          fontname:=drawinfo^.dri_font^.tf_Message.mn_Node.ln_Name;
  362.          txattr:=TextAttr(fontname,ysize,0,0);
  363.          IF Vorab THEN
  364.           BEGIN
  365.            RT:=RTReqFirst('Cheque 2.06 Vorab:',
  366.                       'Ungünstiges Verhältnis'\10'Screenfont : Screengröße',
  367.                       '_Topaz 8|_Ende');
  368.            IF RT=1 THEN topaz8
  369.                    ELSE
  370.                     BEGIN
  371.                      FreeGadgets(glist);
  372.                      FreeVisualInfo(vi);
  373.                      CloseSomeLibs;
  374.                      help:=CloseUtility;
  375.                      exit;
  376.                     END;
  377.           END;
  378.          ALLOK:=true;
  379.         END;
  380.       IF ALLOK=false
  381.        THEN
  382.         BEGIN
  383.          RT:=RTReq('Cheque 2.06','Kann Programm nicht starten.',
  384.                       '_Argh',4);
  385.          exit;
  386.         END;
  387.  
  388.   FOR i:=0 TO 1 DO STx[i]:='';
  389.   Stx[2]:='DM';
  390.   STx[3]:='';
  391.  
  392.  
  393.   STagsA[0]:=TagItem(GT_Underscore,ord('_'));
  394.   STagsA[1]:=TagItem(GTST_MaxChars,50);          {in W}
  395.   STagsA[2]:=TagItem(GA_TabCycle,ord(true));
  396.   STagsA[3]:=TagItem(GTST_String,long(^STx[0]));
  397.   STagsA[4].ti_tag:=Tag_Done;
  398.  
  399.   STagsB[0]:=STagsA[0];
  400.   STagsB[1]:=STagsA[1];                          {an}
  401.   STagsB[2]:=STagsA[2];
  402.   STagsB[3]:=TagItem(GTST_String,long(^STx[1]));
  403.   STagsB[4].ti_tag:=Tag_Done;
  404.  
  405.   STagsC[0]:=STagsA[0];
  406.   STagsC[1]:=TagItem(GTST_MaxChars,4);
  407.   STagsC[2]:=STagsA[2];                           {Währ.}
  408.   STagsC[3]:=TagItem(GTST_String,long(^STx[2]));
  409.   STagsC[4].ti_tag:=Tag_Done;
  410.  
  411.   STagsD[0]:=STagsA[0];
  412.   STagsD[1]:=TagItem(GTST_MaxChars,10);           {Betrag}
  413.   STagsD[2]:=STagsA[2];
  414.   STagsD[3]:=TagItem(GTST_String,long(^STx[3]));
  415.   STagsD[4].ti_tag:=Tag_Done;
  416.  
  417.   STagsE[0]:=STagsA[0];
  418.   STagsE[1]:=TagItem(GTST_MaxChars,20);           {Ort}
  419.   STagsE[2]:=STagsA[2];
  420.   STagsE[3]:=TagItem(GTST_String,long(^STx[4]));
  421.   STagsE[4].ti_tag:=Tag_Done;
  422.  
  423.   STagsF[0]:=STagsA[0];
  424.   STagsF[1]:=TagItem(GTST_MaxChars,10);
  425.   STagsF[2]:=STagsA[2];                           {Datum}
  426.   STagsF[3]:=TagItem(GTST_String,long(^STx[5]));
  427.   STagsF[4].ti_tag:=Tag_Done;
  428.  
  429.   STagsG[0]:=STagsA[0];
  430.   STagsG[1]:=TagItem(GTST_MaxChars,13);
  431.   STagsG[2]:=STagsA[2];                           {KNr.}
  432.   STagsG[3]:=TagItem(GTST_String,long(^STx[6]));
  433.   STagsG[4].ti_tag:=Tag_Done;
  434.  
  435.   Ctx[0]:='Barcheque'; Ctx[1]:='nur zur Verrechnung';
  436.   cfeld[0]:=^CTx[0];
  437.   cfeld[1]:=^Ctx[1];
  438.   cfeld[2]:=NIL;
  439.  
  440.   CTags[0]:=TagItem(GTCY_Active,0);
  441.   CTags[1]:=TagItem(GTCY_LABELS,long(^cfeld));
  442.   CTags[2]:=TagItem(GT_Underscore,ord('_'));
  443.   CTags[3].ti_Tag:=Tag_Done;
  444.  
  445.   GTags[0]:=TagItem(GT_Underscore,ord('_'));
  446.   GTags[1].ti_Tag:=Tag_Done;
  447.  
  448.   ng:=NewGadget(13*Wbr,ScrTextFont+ysize,53*Wbr,ysize+6,'in _Worten:',
  449.                 ^txattr,0,PLACETEXT_LEFT,vi,nil);
  450.   pgad:=CreateGadgetA(STRING_KIND,pgad,^ng,^STagsA[0]);
  451.   g[0]:=pgad;
  452.  
  453.   ng.ng_TopEdge:=ScrTextFont+3*ysize;
  454.   ng.ng_GadgetID:=1;
  455.   ng.ng_GadgetText:='_an / für:';
  456.   pgad:=CreateGadgetA(STRING_KIND,pgad,^ng,^STagsB[0]);
  457.   g[1]:=pgad;
  458.  
  459.   ng.ng_TopEdge:=ScrTextFont+5*ysize;
  460.   ng.ng_GadgetID:=2;
  461.   ng.ng_Width:=5*Wbr;
  462.   ng.ng_GadgetText:='W_ährung:';
  463.   pgad:=CreateGadgetA(STRING_KIND,pgad,^ng,^STagsC[0]);
  464.   g[2]:=pgad;
  465.  
  466.   ng.ng_LeftEdge:=28*WBR;
  467.   ng.ng_GadgetID:=3;
  468.   ng.ng_Width:=13*Wbr;
  469.   ng.ng_GadgetText:='_Betrag:';
  470.   pgad:=CreateGadgetA(STRING_KIND,pgad,^ng,^STagsD[0]);
  471.   g[3]:=pgad;
  472.  
  473.   ng.ng_LeftEdge:=48*WBr;
  474.   ng.ng_GadgetID:=4;
  475.   ng.ng_Width:=18*Wbr;
  476.   ng.ng_GadgetText:='_Ort:';
  477.   pgad:=CreateGadgetA(STRING_KIND,pgad,^ng,^STagsE[0]);
  478.   g[4]:=pgad;
  479.  
  480.   ng.ng_TopEdge:=ScrTextFont+7*ysize;
  481.   ng.ng_LeftEdge:=13*Wbr;
  482.   ng.ng_GadgetID:=5;
  483.   ng.ng_Width:=13*Wbr;
  484.   ng.ng_GadgetText:='Da_tum:';
  485.   pgad:=CreateGadgetA(STRING_KIND,pgad,^ng,^STagsF[0]);
  486.   g[5]:=pgad;
  487.  
  488.   ng.ng_LeftEdge:=48*Wbr;
  489.   ng.ng_GadgetID:=6;
  490.   ng.ng_Width:=18*Wbr;
  491.   ng.ng_GadgetText:='Ka_rtenNummer.:';
  492.   pgad:=CreateGadgetA(STRING_KIND,pgad,^ng,^STagsG[0]);
  493.   g[6]:=pgad;
  494.  
  495.   ng:=NewGadget(28*Wbr,ScrTextFont+10*ysize,26*Wbr,ysize+6,'_Verwendung',
  496.                 ^txattr,7,PLACETEXT_LEFT,vi,nil);
  497.   pgad:=CreateGadgetA(CYCLE_KIND,pgad,^ng,^CTags[0]);
  498.   g[7]:=pgad;
  499.  
  500.   ng:=NewGadget(13*WBr,ScrTextFont+13*ysize,11*Wbr,ysize+6,'_Info',
  501.                 ^txattr,8,PLACETEXT_IN,vi,nil);
  502.   pgad:=CreateGadgetA(BUTTON_KIND,pgad,^ng,^GTags[0]);
  503.   g[8]:=pgad;
  504.  
  505.   ng.ng_LeftEdge:=26*Wbr;
  506.   ng.ng_GadgetID:=9;
  507.   ng.ng_GadgetText:='_Drucken';
  508.   pgad:=CreateGadgetA(BUTTON_KIND,pgad,^ng,^GTags[0]);
  509.   g[9]:=pgad;
  510.  
  511.   ng.ng_LeftEdge:=39*Wbr;
  512.   ng.ng_GadgetID:=10;
  513.   ng.ng_GadgetText:='_Speichern';
  514.   pgad:=CreateGadgetA(BUTTON_KIND,pgad,^ng,^GTags[0]);
  515.   g[10]:=pgad;
  516.  
  517.   ng.ng_LeftEdge:=52*Wbr;
  518.   ng.ng_GadgetID:=11;
  519.   ng.ng_GadgetText:='_Neu';
  520.   pgad:=CreateGadgetA(BUTTON_KIND,pgad,^ng,^GTags[0]);
  521.   g[11]:=pgad;
  522.  
  523.   ng.ng_LeftEdge:=65*Wbr;
  524.   ng.ng_GadgetID:=12;
  525.   ng.ng_GadgetText:='_Ende';
  526.   pgad:=CreateGadgetA(BUTTON_KIND,pgad,^ng,^GTags[0]);
  527.   g[12]:=pgad;
  528.  
  529.   titel:='Cheque 2.06 © & P by Falk Zühlsdorff (PackMAN) 29.06.94';
  530.  
  531.    NWTags[1] :=Tagitem(wa_left,0);
  532.    NWTags[2] :=Tagitem(wa_top,0);
  533.    NWTags[3] :=Tagitem(wa_width,Winbreite);
  534.    NWTags[4] :=Tagitem(wa_height,ScrTextFont+16*ysize);
  535.    NWTags[5] :=Tagitem(wa_activate,ord(true));
  536.    NWTags[6] :=Tagitem(wa_smartrefresh,ord(true));
  537.    NWTags[7] :=Tagitem(wa_rmbtrap,ord(true));
  538.    NWTags[8] :=Tagitem(wa_title,long(^titel));
  539.    NWTags[9]:=Tagitem(wa_Flags,WFLG_CLOSEGADGET+WFLG_DEPTHGADGET+
  540.                                 WFLG_DRAGBAR);
  541.    NWTags[10]:=Tagitem(wa_idcmp,IDCMP_GADGETUP+IDCMP_RAWKEY+
  542.                                 IDCMP_CLOSEWINDOW);
  543.    NWTags[11] :=Tagitem(wa_Gadgets,long(glist));
  544.    NWTags[12]:=Tagitem(tag_done,0);
  545.  
  546.    Win:=openwindowtaglist(nil,^NWTags[1]);
  547.    IF Win<>NIL THEN
  548.     BEGIN
  549.      RP:=Win^.RPort;
  550.      ourfont:=setfont(RP,font);
  551.      ex:=false;
  552.      REPEAT
  553.       Msg:=Wait_Port(Win^.UserPort);
  554.       Msg:=GT_GetIMsg(Win^.UserPort);
  555.       IF Msg<>NIL THEN
  556.        BEGIN
  557.         GT_ReplyIMsg(Msg);
  558.         CASE Msg^.Class OF
  559.  
  560.         IDCMP_CLOSEWINDOW: ex:=true;
  561.  
  562.         IDCMP_GADGETUP:
  563.          BEGIN
  564.           Akt:=Msg^.IAddress;
  565.           CASE AKT^.GADGETID OF
  566.            0..5: BEGIN i:=AKT^.GADGETID+1;
  567.                        strakt:=ACTIVATEGADGET(g[i],Win,NIL);
  568.                  END;
  569.               7: Cycle(2);
  570.               8: InfoLine;
  571.               9: Drucken;
  572.              10: Speichern;
  573.              11: Neu;
  574.              12: ex:=true;
  575.           ELSE;END;
  576.          END;
  577.         IDCMP_RAWKEY:
  578.          BEGIN
  579.           CASE Msg^.code OF
  580.               $11: strakt:=ACTIVATEGADGET(g[0],Win,NIL);    {W}
  581.               $20: strakt:=ACTIVATEGADGET(g[1],Win,NIL);    {A}
  582.               $2A: strakt:=ACTIVATEGADGET(g[2],Win,NIL);    {Ä}
  583.               $35: strakt:=ACTIVATEGADGET(g[3],Win,NIL);    {B}
  584.               $18: strakt:=ACTIVATEGADGET(g[4],Win,NIL);    {o}
  585.               $14: strakt:=ACTIVATEGADGET(g[5],Win,NIL);    {T}
  586.               $13: strakt:=ACTIVATEGADGET(g[6],Win,NIL);    {R}
  587.               $34: Cycle(1); {V}
  588.               $17: InfoLine;
  589.               $22: Drucken;
  590.               $21: Speichern;
  591.               $36: Neu;
  592.               $12,
  593.               $45: ex:=true;
  594.            ELSE;END;
  595.          END;
  596.         ELSE;END;
  597.        END;
  598.       UNTIL ex;
  599.  
  600.      CloseWindow(Win);
  601.     END
  602.    ELSE RT:=RTReq('Cheque 2.06','Kann Oberfläche nicht darstellen.',
  603.                   '_Argh',4);
  604.      FreeGadgets(glist);
  605.      FreeVisualInfo(vi);
  606.      CloseSomeLibs;
  607.      IF Gadtoolsbase<>NIL THEN CloseLib(Gadtoolsbase);
  608.      help:=CloseUtility;
  609.   END;
  610.  END;
  611. END;
  612.  
  613. {********************************** MAIN *********************************}
  614.  
  615. BEGIN
  616.  cycleNr:=0;
  617.  STx[4]:='';STx[6]:=''; {Argh}
  618.  help:=getbattclockL;
  619.  IF battclockdate<>'' THEN STx[5]:=battclockdate ELSE STx[5]:='';
  620.  Laden;
  621.  InitWin;
  622. END.
  623.  
  624.  
  625.